<?
class ActiveForm extends Form{
	private $user,$show_active=1;
	function ActiveForm(){
		Form::Form('ActiveForm');
		$this->link_css('style/postItem.css');
		
		$user_id	=(int)Url::get('user_id',0);
		if($user_id){
			$this->user=DB::select('user','id='.$user_id);
			if($this->user){//Nếu tồn tại user
				$active_code=Url::get('code');
				$this->active_user($this->user,$active_code);
			}
			else{
				$this->setFormError('','Tài khoản không tồn tại!');
			}
		}
	}
	
	function on_submit(){
		$user_name	=AZLib::trimSpace(Url::get('user_name'));
		
		if(preg_match('/[^A-Za-z0-9_.]/',$user_name)){
			$this->setFormError('','Tài khoản không tồn tại!');
		}
		else{
			$this->user=DB::select('user','user_name="'.$user_name.'"');
			
			if($this->user){//Nếu tồn tại user
				if(isset($_POST['acctive'])){
					$active_code=Url::get('active_code');
					$this->active_user($this->user,$active_code);
				}
				elseif(isset($_POST['re_acctive'])){//Gửi lại mail kích hoạt
					$this->reactive_user($this->user);
				}
			}
			else{
				$this->setFormError('','Tài khoản không tồn tại!');
			}
		}
	}
	function draw(){
		global $display;
		$this->beginForm(false,'post',false,Url::build_current(array('cmd'=>'active')));
		$display->add('msg',$this->showFormErrorMessages(1));
		$display->add('smsg',$this->showFormSuccesMessages(1));
		$display->add('show_active',$this->show_active);
		$display->add('user_name',Url::get('user_name',$this->user['user_name']));
		$display->output('active');
		$this->endForm();
	}
	
	function reactive_user($user){//Gửi lại mail kích hoạt
		if($user['is_active']==1){//Nếu chưa kích hoạt
			if(USER_ACTIVE_ON){
				$email=$user['email'];
				global $display;
				$active=DB::select('user_active','user_id='.$user['id']);
				$active_code		= md5(TIME_NOW.$user['password']);
				if($active){
					$active=array(
									'id'		 =>$active['id'],
									'user_id'	 =>$user['id'],
									'active_code'=>$active_code,
									'time'		 =>TIME_NOW,
									);
				}
				else{
					$active=array(
									'user_id'	 =>$user['id'],
									'active_code'=>$active_code,
									'time'		 =>TIME_NOW,
									);
				}
				DB::insert('user_active',$active,true);
				
				$display->add('eb_url',WEB_ROOT);
				$display->add('user_id',$user['id']);
				$display->add('user_name',$user['user_name']);
				$display->add('active_code',$active_code);
				
				$display->add('WEB_NAME',WEB_NAME);
				$display->add('MAIL_FOOTER',MAIL_FOOTER);
						
				$content_email=$display->output('send_active_mail',1);
				//Send email here;
				if(System::sendEBEmail($email,'Kích hoạt lại tài khoản!',$content_email)){
					$this->setFormSucces('','Mã kích hoạt đã được gửi đi tới E-mail: "'.$email.'", bạn hãy check lại Email để kích hoạt tài khoản của mình!
											<br />(Vui lòng kiểm tra trong bulk mail hoặc spam mail của bạn nếu bạn không nhận được email trong hộp thư đến)');
				}
				else{
					$this->setFormError('','Không gửi được Mã kích hoạt tới E-mail: "'.$email.'"!');
				}
			}
			else{
				DB::query('UPDATE user SET is_active=0 WHERE id='.$user['id']);
				User::getUser($user['id'],0,1);
				Url::redirect('sign_in');
			}
		}
		else{
			$this->show_active=0;
			$this->setFormError('','Tài khoản đã được kích hoạt rồi!');
		}
	}
	
	function active_user($user,$active_code){
		$active=DB::select('user_active','user_id='.$user['id']);
		if($active){//Nếu user chưa được kích hoạt
			$success=false;
			if(USER_ACTIVE_ON){//Nếu bật chế độ active tài khoản
				if($active['active_code']==$active_code && $active_code){
					DB::query('UPDATE user SET is_active=0 WHERE id='.$user['id']);
					DB::delete('user_active','user_id='.$user['id']);
					User::getUser($user['id'],0,1);
					$success=true;
				}
				else{
					$this->setFormError('','Mã kích hoạt không đúng!');
				}
			}
			else{
				if($active['active_code']==$active_code && $active_code){
					DB::query('UPDATE user SET is_active=0 WHERE id='.$user['id']);
					DB::delete('user_active','user_id='.$user['id']);
					User::getUser($user['id'],0,1);
					$success=true;
				}
				else{
					DB::query('UPDATE user SET is_active=0 WHERE id='.$user['id']);
					DB::delete('user_active','user_id='.$user['id']);
					User::getUser($user['id'],0,1);
					Url::redirect('sign_in');
				}
			}
			if($success){//Đăng nhập cho user, gửi mail thông báo đã kích hoạt!
				$_SESSION['is_load_page_first'] = 1;			
				User::LogIn($user['id']);
				
				if(USER_ACTIVE_ON){//Gửi mail thông báo thành công
					global $display;
					$display->add('eb_url',WEB_ROOT);
					$display->add('user_id',$user['id']);
					$display->add('user_name',$user['user_name']);
					$content_email=$display->output('send_activated_mail',1);
					System::sendEBEmail($user['email'],'Kích hoạt tài khoản thành công!',$content_email);
				}
				Url::redirect_current(array('cmd'=>'activated'));
			}
		}
		else{
			if($this->user['is_active']==1){//Nếu chưa kích hoạt
				DB::query('UPDATE user SET is_active=0 WHERE id='.$user['id']);
				User::getUser($user['id'],0,1);
				Url::redirect('sign_in');
			}
			else{
				$this->show_active=0;
				$this->setFormError('','Tài khoản đã được kích hoạt rồi!');
			}
		}
	}
}
?>